package cn.tedu.charging.device.StartUp;

import cn.tedu.charging.device.dao.repository.DeviceRepository;
import cn.tedu.charging.device.dao.repository.StationCacheRepository;
import cn.tedu.charging.device.pojo.po.StationPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;


import java.util.List;


@Slf4j
@Component
public class StationDataInit implements ApplicationRunner {
    @Autowired
    DeviceRepository deviceRepository;

    @Autowired
    @Qualifier("GEOANDString")
    StationCacheRepository stationCacheRepository;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("缓存预热，在项目启动的时候。将数据库查询场站的信息，保存在redis数据库里");
        List<StationPO> stationPOS =deviceRepository.getAllStation();
        log.debug("查询到的场站信息{}", stationPOS);
        if (!CollectionUtils.isEmpty(stationPOS)){
            //如果场站信息不为空 保存信息到Redis
            //场站信息 有两类 位置信息（经纬度），基本信息（场站名称，联系方式...）
            //存一起 位置信息  基本信息  GEO 业务是OK

            //分开存 位置信息 GEO
            // 基本信息 String  可以给附近充电站接口使用，也可以给场站详情使用 缓存的基本信息能复用

            //分开存 位置信息 GEO 基本信息 Hash
            stationCacheRepository.save(stationPOS);
            log.debug("保存场站信息到Redis成功");

        }else {
            log.debug("没有场站信息");
        }

    }
}
